#tf.nn.local_response_normalization(input, depth_radius=None, bias=None, alpha=None, beta=None, name=None)
#除去name参数用以指定该操作的name，与方法有关的一共五个参数：
#第一个参数input：这个输入就是feature map了，既然是feature map，那么它就具有[batch, height, width, channels]这样的shape
#第二个参数depth_radius：这个值需要自己指定，就是上述公式中的n/2
#第三个参数bias：上述公式中的k
#第四个参数alpha：上述公式中的α
#第五个参数beta：上述公式中的β

import tensorflow as tf

a = tf.constant([
    [[1.0,2.0,3.0,4.0],
     [5.0,6.0,7.0,8.0],
     [8.0,7.0,6.0,5.0],
     [4.0,3.0,2.0,1.0]],
    [[4.0,3.0,2.0,1.0],
     [8.0,7.0,6.0,5.0],
     [1.0,2.0,3.0,4.0],
     [5.0,6.0,7.0,8.0]]
])

a = tf.reshape(a,[1,2,2,8])

normal_a = tf.nn.local_response_normalization(a,2,0,1,1)

with tf.Session() as sess:
    print("feature map:")
    image = sess.run(a)
    print(image)
    print("normalized feature map:")
    normal = sess.run(normal_a)
    print(normal)